HTTP--Hyper Text Transfer Protocol,超文本传输协议。是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。其中一个请求的开始到一个响应的结束称为事务,当一个事务结束后还会在服务端添加一条日志条目。
HTTP协议的特点 :
- http协议是一种无状态协议。(每次访问服务器时,没有办法识别身份)
- 短连接协议(每次通信完毕就断开了)
- http协议是一种单向通信协议(只能由客户的端主动向服务器发出请求,然后接受响应,服务器端不能主动给客户端发送消息)
- 每次发起HTTP请求时,都会将浏览器缓存的cookie发送给服务器端。
- 每次只能处理一个请求(两张图片,就是两个请求)
- 简单、快捷、高效
一、HTTP请求
HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。
HTTP请求由状态行、请求头、请求正文三部分组成:
状态行:包括请求方式Method、资源路径URL、协议版本Version;
请求头:包括一些访问的域名、用户代理、Cookie等信息;
请求正文:就是HTTP请求的数据。
备注:请求方式Method一般有GET、POST、PUT、DELETE,含义分别是获取、修改、上传、删除,其中GET方式仅仅为获取服务器资源,方式较为简单,因此在请求方式为GET的HTTP请求数据中,请求正文部分可以省略,直接将想要获取的资源添加到URL中。
二、HTTP响应
2.1 响应数据格式
服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应。
HTTP响应由三部分组成:状态行、响应头、响应正文;
状态行:包括协议版本Version、状态码Status Code、回应短语;
响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;
响应正文:就是响应的具体数据。
备注:我们主要关心并且能够在客户端浏览器看得到的是三位数的状态码,不同的状态码代表不同的含义,其中
1xx表示HTTP请求已经接受,继续处理请求
2xx表示HTTP请求已经处理完成3xx表示把请求访问的URL重定向到其他目录4xx表示客户端出现错误5xx表示服务端出现错误。
每一次请求信息中包含的数据:状态行 、 请求头(数据包头:headers)、请求的正文,统称“数据包”。
Request Hearders :数据的包头(包含信息): http传输过程 写信一样的 : 写信人、收信人信息,署名、日期...
- 状态行:包含请求的方式、资源路径地址、协议版本号。
- Request URL 请求的地址
- Request Method 请求方式
- Status Code 状态码
- 200 ok 请求成功
- 304 请求内容与上一次请求一致,内容没有修改(此时服务器不会返回任何资源,会通知浏览器去缓存中读取)
- 404 not found 请求资源地址不存在(路径错误了,服务器地址出了问题)
- 500 服务器内部错误(一般后台程序错误)
- Remote Address 服务器ip地址 带端口号
- 请求数据包头:
- Accept : 服务器端能接受端数据格式
- Accept-Encoding : 编码
- Accept-Language: 语言
- Cache-Control :设定缓存,及缓存的存活时间
- Connection :keep-alive 保持长连接
- Cookie (曲奇,饼干):存储在浏览器中的数据(存储一些用户信息数据)
- Host :主机
- User-Agent :用户代理(UA)能够标识客户端一些浏览器版本,系统的信息
- 正文:(发送的数据)表单数据 、查询字符串等
Response Header服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应。
HTTP响应由三部分组成:状态行、响应头、响应正文;
状态行:包括协议版本Version、状态码Status Code、回应短语;
响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;
cache-control: 设定缓存,及缓存的存活时间
content-length: 返回等内容的长度
Content-Type : 返回的内容类型
date :日期
last-modified :文件最后修改时间
server :服务器信息
响应正文:就是响应的具体数据。
2.2 常见状态码的含义
200---OK/请求已经正常处理完毕
301---/请求永久重定向
302---/请求临时重定向
304---/请求被重定向到客户端本地缓存
400---/客户端请求存在语法错误
401---/客户端请求没有经过授权
403---/客户端的请求被服务器拒绝,一般为客户端没有访问权限
404---/客户端请求的URL在服务端不存在
500---/服务端永久错误
503---/服务端发生临时错误